/**
 * 
 */
package com.yidu.drug.service;

import java.util.List;
import java.util.Map;

import com.yidu.drug.common.Sector;
import com.yidu.drug.model.DrugProductionModel;
import com.yidu.drug.model.PoBreakdown;
import com.yidu.drug.model.ProductionModel;
import com.yidu.drug.model.PurchaseOrderModel;
import com.yidu.drug.model.SalesStatisticsModel;

/**
 * 销售统计表Service
 * @author tanglei
 * @date 2018年8月27日 下午2:59:10
 * @version 1.0
 */
public interface SalesStatisticsService {
	/**
	 * 增加销售统计表数据(一次性添加全部字段)
	 * @param record 传入一个销售统计表对象
	 * @return 返回一个影响的行数
	 */
    int insert(SalesStatisticsModel record);

    /**
     * 增加销售统计表数据(可增加一个或多个字段)
     * @param record 传入一个销售统计表对象
     * @return 返回一个影响的行数
     */
    int insertSelective(SalesStatisticsModel record);
    
    /**
     * 实现销售量统计折线统计图
     * @param record 传入一个销售统计对象
     * @return 返回一个map集合
     */
    Map<String,Object> findAllSalesStatistics(SalesStatisticsModel record,String num);
    
    /**
     * 实现月成本总金额与约销售总金额对比折线图
     * @param record 传入一个销售统计对象
     * @return 返回一个map集合
     */
    Map<String,Object> findTotalCostAllPriceAndSalesProfit(SalesStatisticsModel record,String num);
    
    /**
     * 实现销售量排行前十的站年总销量的百分比扇形统计图
     * @param record 传入一个销售统计对象
     * @return 返回一个map集合
     */
    List<Sector> findYearSumNumber(SalesStatisticsModel record);
    
    /**
     * 查询今日或本月销量
     * @param record 传入一个销售统计对象
     * @return 返回一个销量的数量
     */
    Long findTodaysSalesOrMonthSales(SalesStatisticsModel record,String num);
    
    /**
     * 查询今日收入或本月收入(纯收入)
     * @param record 传入一个销售统计对象
     * @return 返回一个收入的金额
     */
    Double findTodaysIncomeOrMonthIncome(SalesStatisticsModel record,String num);
    
    /**
     * 增加生产计划单
     * @param pro 传入生产计划单对象
     * @param startTime 开始的时间
     * @param endTime 结束的时间
     * @return 返回一个map集合
     */
    Map<String,Object> addProduction(ProductionModel pro,String startTime,String endTime);
    
    /**
     * 向生产计划单里面增加药品
     * @param record 传入一个药品生产计划对象
     * @return map集合
     */
    Map<String,Object> addDrugProduction(DrugProductionModel record);
    
    /**
     * 根据药品生产计划ID删除
     * @param drpId 传入一个药品生产计划ID
     * @return 返回一个影响的行数
     */
    int deleteDrugProduction(String drpId);
    
    /**
     * 根据生产计划ID查询
     * @param proId 传入一个生产计划ID
     * @return 返回一个生产计划对象
     */
    ProductionModel findByProId(String proId);
    
    /**
     * 增加采购订单
     * @param record 传入一个采购订单对象
     * @return 返回一个map集合
     */
    Map<String,Object> addPurchaseOrder(PurchaseOrderModel record);
    
    /**
     * 增加采购订单明细
     * @param record 传入一个采购订单明细对象
     * @return 返回一个map集合
     */
    Map<String,Object> addPoBreakdown(PoBreakdown record);
    
    /**
     * 根据采购明细ID删除
     * @param pobId 传入一个采购明细ID
     * @return 返回一个影响的行数
     */
    int deletePoBreakdown(String pobId);
    
    /**
     * 根据采购订单ID查询
     * @param poId 传入一个采购订单ID
     * @return 返回一个采购订单对象
     */
    PurchaseOrderModel findByPoId(String poId);
    
    /**
     * 根据生产计划ID查询药品生产计划
     * @param proId 传入一个生产计划ID
     * @return 返回一个list集合
     */
    List<DrugProductionModel> findByProIds(String proId);
    
    /**
     * 根据采购ID查询采购明细
     * @param pobId 传入一个采购ID
     * @return 返回一个list集合
     */
    List<PoBreakdown> findByPoIds(String poId);
}
